package org.fast.project.service.bo;

import lombok.Builder;
import lombok.Data;

import org.springframework.data.domain.Page;

/**
 * @author : lilith·bristol
 * @program : spring-web-archetype-domain
 * @description : 分页返回数据对象 分页查询结果放入此对象 再放入commonResponse
 * @date : 2020-04-23 00:01
 **/
@Data
@Builder
public class PageDO<T> {

    /**
     * 页数
     */
    Integer pageNumber;
    /**
     * 分页大小
     */
    Integer pageSize;

    /**
     * 总页数
     */
    Integer totalPageNumbers;

    /**
     * 总数据量
     */
    Long totalElements;
    /**
     * 数据集合体
     */
    T data;

    /**
     * @description 根据分页查询结果Page初始化PageDO基础数据
     * @author lilith·bristol
     * @date 0:11 2020/4/23
     */
    public static <T, R> PageDO<R> init(Page<T> page, R data) {
        return PageDO.<R>builder()
                .pageNumber(page.getNumber())
                .pageSize(page.getSize())
                .totalElements(page.getTotalElements())
                .totalPageNumbers(page.getTotalPages())
                .data(data)
                .build();
    }

    /**
     *
     * 根据分页查询结果Page初始化PageDO基础数据 但隐藏总数
     * @author lilith·bristol
     * @date 0:10 2020/4/23
     */
    public static <T, R> PageDO<R> initThisPage(Page<T> page, R data) {
        return PageDO.<R>builder()
                .pageNumber(page.getNumber())
                .pageSize(page.getSize())
                .data(data)
                .build();
    }


}
